package src.model.gameWorld.pathfinding.movement;

/**
 * <b>Overview</b>
 * MovementCost represents some cost associated with movement from one position to another.
 *
 * <b>Responsibilities</b>
 * Allow mathematical operations and represent the cost of moving from one position to another.
 *
 * <b>Collaborators</b>
 * None.
 *
 * <b>Implementor</b> - Bruce
 * <b>Tester</b> - Tim
 *
 * @author Bruce
 */
public interface MovementCost extends Comparable<MovementCost>, Cloneable
{
	/**
	 * Adds the specified MovementCost to this one.
	 *
	 * @param other the MovementCost to add to this one.
	 */
	public void add(MovementCost other);

	/**
	 * @return a double value that may be used to represent this MovementCost.
	 */
	public double getDoubleValue();

	public MovementCost clone();
}